package com.cskaoyan.javase.basic._4scanner;

import java.util.Scanner;

/**
 * 混用next系列、nextLine方法引发错误
 * 混用会导致nextLine方法接收一个绝对空的字符,没有正常键盘录入
 * 那么如何解决呢?
 *      1.不用一个对象,用两个对象(这种方式是可行的,但比较笨,不推荐)
 *      2.使用一个nextLine()接收绝对空字符
 *      3.不用回车换行结束nextInt扫描,而是用空格(但是这种方式会导致nextLine方法接收额外的空格,不是很好)
 *      4.先写nextLine,再写next系列方法(也不推荐,用这种方式相当于给自己挖坑,现在不跳,以后就会跳)
 *      5.上面四种方式都不要使用,建议不要混用两种类型的方法,建议如果有录入多种数据类型数据的场景时,
 *          永远使用nextLine方法
 *
 *
 *
 * @since 09:41
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) {
        /*char c = 0;
        System.out.println(c + "123");*/
        Scanner sc = new Scanner(System.in);

        /*
            这里我们用一个回车结束nextInt方法的扫描
            而代码后面刚好有一个nextLine方法会把这个回车作为结束扫描的标志
            所以nextLine方法还没有轮到它开始扫描,就已经结束了扫描
            所以nextLine方法会接收一个绝对空的字符
            注:
                在计算机中,绝对空,没有任何内容也是一个字符
                它的编码值是0
         */
        System.out.println("请输入一个字符串：");
        String str = sc.nextLine();

        System.out.println("请输入一个int数值：");
        int num = sc.nextInt();
        System.out.println(num);
        System.out.println(str);
        // 获取字符串长度
        // 这里会输出一个长度为0的字符串,没有任何内容,绝对空的字符串
        System.out.println(str.length());
    }
}
